package demo.topic17;

import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.InputStream;

/**
 * SAX
 * 1. API中主要有四种处理事件的接口，他们分别是ContentHandler、DHTHandler、EntityResolver
 * 和ErrorHandler。实际上只要继承DefaultHandler类就可以，DefaultHandler实现了这四个事件处理器接口，
 * 然后提供了每个抽象方法的默认实现。
 *
 */

public class XMLDemo {
    @Test
    public void saxParseXML() throws ParserConfigurationException, SAXException {
        // 创建解析器工厂
        SAXParserFactory factory = SAXParserFactory.newInstance();
        // 创建解析器
        SAXParser parser = factory.newSAXParser();
        // 创建处理器
        PersonHandler handler = new PersonHandler();
        // 解析
        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("person.xml");

        // 将 InputStream 包装为 InputSource
        InputSource inputSource = new InputSource(is);

        System.out.println(inputSource);

//        parser.parse(inputSource, handler);
    }
}
